# 使用 OpenJDK 17 作为基础镜像
FROM openjdk:17-jdk-slim

# 设置工作目录
WORKDIR /app

# 设置国内镜像源以提高下载速度
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list

# 安装必要的工具
RUN apt-get update && apt-get install -y \
    curl \
    wget \
    && rm -rf /var/lib/apt/lists/*

# 复制 Maven 配置文件
COPY pom.xml .
COPY */pom.xml ./

# 复制源代码
COPY . .

# 设置 Maven 环境变量
ENV MAVEN_HOME=/opt/maven
ENV PATH=$PATH:$MAVEN_HOME/bin

# 安装 Maven
RUN wget -q https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz && \
    tar xzf apache-maven-3.9.6-bin.tar.gz -C /opt && \
    ln -s /opt/apache-maven-3.9.6 /opt/maven && \
    rm apache-maven-3.9.6-bin.tar.gz

# 构建参数
ARG SERVICE_NAME

# 编译项目
RUN mvn clean package -DskipTests -pl ${SERVICE_NAME} -am

# 设置服务名称环境变量
ENV SERVICE_NAME=${SERVICE_NAME}

# 创建启动脚本
RUN echo '#!/bin/bash\n\
cd /app/${SERVICE_NAME}/target\n\
java -jar $(ls *.jar | head -1) --spring.profiles.active=${SPRING_PROFILES_ACTIVE:-default}\n\
' > /app/start.sh && chmod +x /app/start.sh

# 暴露端口（根据服务动态设置）
EXPOSE 8000 8010 8020 8030 8040 8050 12000 18000 18001 18002 19000 19001

# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=60s --retries=3 \
    CMD curl -f http://localhost:${PORT:-8000}/actuator/health || exit 1

# 启动命令
CMD ["/app/start.sh"] 